package com.chenfan.mcn.model.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.chenfan.mcn.constant.NumberFormatCst;
import lombok.Data;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 导入更新平台excel-DTO
 * @author wulg
 * @date 2023/5/16
 */
@SuppressWarnings({"deprecation", "AlibabaUndefineMagicConstant"})
@Data
public class StarPlatformInfoInputDTO implements Serializable {

    private static final long serialVersionUID = -361039984019840900L;

    /**
     * 所在平台ID
     */
    private String platformId;

    /**
     * 所在平台
     */
    @Excel(name = "所在平台")
    @NotBlank(message = "【所在平台】必填")
    @Size(max = 255, message = "【所在平台】长度不能超过{max}个字符")
    private String platformName;

    /**
     * 平台昵称
     */
    @Excel(name = "平台昵称")
    @NotBlank(message = "【平台昵称】必填")
    @Size(max = 255, message = "【平台昵称】长度不能超过{max}个字符")
    private String platNickName;

    /**
     * 平台状态：0-启用，1-禁用
     */
    private Integer platformStatus;

    /**
     * 平台状态
     */
    @Excel(name = "状态")
    @NotBlank(message = "【状态】必填")
    @Pattern(regexp = "^(启用|禁用)$", message = "状态录入错误，仅能录入【禁用】或者【启用】")
    private String platfromStatusName;

    /**
     * 平台ID
     */
    @Excel(name = "平台ID")
    @NotBlank(message = "【平台ID】必填")
    @Size(max = 200, message = "【平台ID】长度不能超过{max}个字符")
    private String starPlatformId;

    /**
     * 用户ID
     */
    @Excel(name = "用户ID")
    @NotBlank(message = "【用户ID】必填")
    @Size(max = 500, message = "【用户ID】长度不能超过{max}个字符")
    private String userId;

    /**
     * 账号是否入驻：0否1是
     */
    private Integer inSystemAdmin;

    /**
     * 账号是否入驻
     */
    @Excel(name = "账号是否入驻")
    @NotBlank(message = "【账号是否入驻】必填")
    @Pattern(regexp = "^(是|否)$", message = "账号是否入驻录入错误，仅能录入【是】或者【否】")
    private String inSystemAdminName;

    /**
     * 平台链接
     */
    @Excel(name = "平台链接")
    @NotBlank(message = "【平台链接】必填")
    @Size(max = 500, message = "【平台链接】长度不能超过{max}个字符")
    private String platLinkUrl;

    /**
     * 粉丝数量（万）
     */
    @Excel(name = "粉丝数量（万）", type = 10)
    @NotNull(message = "【粉丝数量（万）】必填")
    @DecimalMin(value = "0.00", message ="【粉丝数量（万）】不能小于0")
    @Digits(integer = 10, fraction = 2, message = "【粉丝数量（万）】数值必须大于等于0，其中整数位最多{integer}位，小数位最多{fraction}位")
    private BigDecimal fansQuantity;

    /**
     * 基础互动量（次）
     */
    @Excel(name = "基础互动量（次）", type = 10)
    @NotNull(message = "【基础互动量（次）】必填")
    @DecimalMin(value = "0.00", message ="【基础互动量（次）】不能小于0")
    @Digits(integer = 10, fraction = 2, message = "【基础互动量（次）】数值必须大于等于0，其中整数位最多{integer}位，小数位最多{fraction}位")
    private BigDecimal interactiveQuantity;

    /**
     * 图文阅读量（万）
     */
    @Excel(name = "图文阅读量（万）", type = 10)
    @NotNull(message = "【图文阅读量（万）】必填")
    @DecimalMin(value = "0.00", message ="【视频阅读量（万）】不能小于0")
    @Digits(integer = 10, fraction = 2, message = "【图文阅读量（万）】数值必须大于等于0，其中整数位最多{integer}位，小数位最多{fraction}位")
    private BigDecimal graphicReadingQuantity;

    /**
     * 视频阅读量（万）
     */
    @Excel(name = "视频阅读量（万）", type = 10)
    @NotNull(message = "【视频阅读量（万）】必填")
    @DecimalMin(value = "0.00", message ="【视频阅读量（万）】不能小于0")
    @Digits(integer = 10, fraction = 2, message = "【视频阅读量（万）】数值必须大于等于0，其中整数位最多{integer}位，小数位最多{fraction}位")
    private BigDecimal videoReadingQuantity;

    /**
     * 播放量（万）
     */
    @Excel(name = "播放量（万）", type = 10)
    @NotNull(message = "【播放量（万）】必填")
    @DecimalMin(value = "0.00", message ="【播放量（万）】不能小于0")
    @Digits(integer = 10, fraction = 2, message = "【播放量（万）】数值必须大于等于0，其中整数位最多{integer}位，小数位最多{fraction}位")
    private BigDecimal videoPlayQuantity;

    /**
     * 分成比例（%）
     */
    @NotNull(message = "【分成比例（%）】必填")
    @DecimalMin(value = "0", message ="【分成比例（%）】不能小于0")
    @DecimalMax(value = "100", message ="【分成比例（%）】不能大于100")
    @Excel(name = "分成比例（%）")
    private BigDecimal devidedRate;

    /**
     * 是否参与绩效考核
     */
    private Integer isAssessment;


    @Excel(name = "是否参与绩效考核")
    @NotBlank(message = "【是否参与绩效考核】必填")
    @Pattern(regexp = "^(是|否)$", message = "是否参与绩效考核录入错误，仅能录入【是】或者【否】")
    private String isAssessmentName;

    /**
     * 个人简介
     */
    @Excel(name = "个人简介")
    @NotBlank(message = "【个人简介】必填")
    @Size(max = 500, message = "【个人简介】长度不能超过{max}个字符")
    private String individualResume;

    /**
     * 备注
     */
    @Excel(name = "备注")
    @Size(max = 255, message = "【备注】长度不能超过{max}个字符")
    private String remark;

    public Integer getPlatformStatus() {
        if("启用".equals(this.platfromStatusName)) {
            return 0;
        } else if("禁用".equals(this.platfromStatusName)) {
            return 1;
        }
        return null;
    }

    public Integer getInSystemAdmin() {
        if("是".equals(this.inSystemAdminName)) {
            return 1;
        } else if("否".equals(this.inSystemAdminName)) {
            return 0;
        }
        return null;
    }

    public Integer getIsAssessment() {
        if("是".equals(this.isAssessmentName)) {
            return 2;
        } else if("否".equals(this.isAssessmentName)) {
            return 1;
        }
        return null;
    }
}
